#include <iostream>

using namespace std;

/*
 * 静态成员变量
 *      1、所有对象共享一份数据
 *      2、在编译阶段分配内存
 *      3、类内声明，类外初始化
 *
 * 静态成员函数
 *      1、所有对象共享一个函数
 *      2、静态成员函数只能访问静态成员变量
 */

class Person{
public:
    int c;
    static int p_a;
    static void test01(){
//        c = 10;  // 只能访问静态成员变量
        cout << "test01" << endl;
    }
private:
    static int p_b;
    static void test02(){
        cout << "test02" << endl;
    }
};

int Person::p_a = 10;   // 类外初始化
int Person::p_b = 20;

int main() {

    Person p;
    p.p_a;   // public属性可以访问到，private属性不可以访问
    p.test01();

    Person::p_a;   // 也可以通过类名访问静态变量
    Person::test01();

    return 0;
}
